package com.sumainfor.pc.market.dao.tenant;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sumainfor.common.annotation.IgnoreAuth;
import com.sumainfor.common.from.SearchHousingFrom;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Author Jack Chen
 * @Create 2019-01-29 14:27
 */
@IgnoreAuth
public interface TeantHousingMapper {


    /**
     * 房源列表条件搜索分页获取
     *
     * @param page 分页
     * @param from 数据
     * @return
     */
    IPage<Map<String, Object>> selectHousingListData(Page page, @Param("from") SearchHousingFrom from);

    /**
     * 根据标题ID 查询标签标题表标题的名称
     *
     * @param tiId
     * @return
     */
    String getTitleNameById(String tiId);

    /**
     * 根据 介绍标签的 id集合 查询介绍标签的数据
     *
     * @param ids
     * @return
     */
    List<Map<String, Object>> selectDetailList(@Param("ids") List<String> ids);

    /**
     * 根据名称查询出所有的描述ID集合
     *
     * @param type
     * @param names
     * @return
     */
    List<String> selectInIds(@Param("type") Integer type, @Param("names") List<String> names);

    /**
     * 查询房源详细信息 通过房源详表的编号
     *
     * @param houId
     * @return
     */
    List<Map<String, Object>> getHousingInfoById(String houId);

    /**
     * 查询获得房源基本信息主表数据
     *
     * @param configId
     * @return
     */
    Map<String, Object> getConfigMain(String configId);

    /**
     * 根据房源主编号 查询公共区域数据
     *
     * @param houId
     * @return
     */
    List<Map<String, Object>> selectHousingPublicConfigByHousingId(String houId);

    /**
     * 获取卧室图片 通过房源变化查询
     *
     * @param houId
     * @return
     */
    List<String> selectWsArrayByHouId(String houId);

    /**
     * 查询周边的设施
     *
     * @param ids
     * @return
     */
    List<Map<String, Object>> selectFacilityByIds(@Param("ids") List<String> ids);

    /**
     * 判断这个租客是否存在 租客主表中
     *
     * @param tenantId
     * @return 返回数量
     */
    int checkTenantUserExist(String tenantId);

    /**
     * 插入数据到租客主表
     *
     * @param params
     * @return
     */
    int insertTenantMainData(Map<String, Object> params);

    /**
     * 插入数据到工单主表
     *
     * @param params
     * @return
     */
    int insertWordOrderMain(Map<String, Object> params);

    /**
     * 通过租客的编号查询工单主表信息
     *
     * @param tenId
     * @return
     */
    Map<String, Object> getWordOrderMainByTenId(String tenId);

    /**
     * 更新工单主表信息数据
     *
     * @param params
     * @return
     */
    int updateWordOrderMainById(Map<String, Object> params);

    /**
     * 插入一条数据到工单详表中去
     *
     * @param params
     * @return
     */
    int insertWordOrderInfoData(Map<String, Object> params);

    /**
     * 获得工单详表中最后一次 这个销售的最后一次接单时间
     *
     * @param wmId
     * @return
     */
    Date getLastOrderInfoDataOne(@Param("wmId") String wmId, @Param("setId") String setId);

    /**
     * 查询判断是否存在这个职业信息
     *
     * @param infoName
     * @return
     */
    Map<String, Object> checkWordInfoIsExist(String infoName);

    /**
     * 插入数据到职业表中去
     *
     * @param params
     * @return
     */
    int insertWordInfoData(Map<String, Object> params);

    /**
     * 查询房源列表数据根据 房源详表编号
     *
     * @param hIds
     * @param page
     * @return
     */
    IPage<Map<String, Object>> selectHousingListByIds(Page page, @Param("hIds") List<String> hIds);

    /**
     * 查询预约记录
     *
     * @param tenId
     * @return
     */
    List<Map<String, Object>> selectMakeHousingList(String tenId);

    /**
     * 给预约单进行评价
     *
     * @param params
     * @return
     */
    int commentMakeOrder(Map<String, Object> params);

    /**
     * 查询这个工单这个房源是否有未完成的带看信息
     *
     * @param woId
     * @param hinfoId
     * @return
     */
    int getNotDoneOrderCount(@Param("woId") String woId, @Param("hinfoId") String hinfoId);


    /**
     * 查询这个房源下房源的信息
     *
     * @param houId
     * @return
     */
    List<Map<String, Object>> selectOtherHousingInfo(String houId);


    ///////////////////////////////////////////////////////////////////////////
    // 查询最优活动
    ///////////////////////////////////////////////////////////////////////////

    /**
     * 首次查询活动定价
     *
     * @return
     */
    Map<String, Object> selectFirstData(String houInfoId);

    /**
     * 查询满减
     *
     * @param id
     * @return
     */
    Map<String, Object> getActivateMj(String id);

    /**
     * 查询付款方式
     *
     * @param id
     * @return
     */
    Map<String, Object> getActivatePay(String id);

    /**
     * 查询满送
     *
     * @param id
     * @return
     */
    Map<String, Object> getActivateMs(String id);


    /**
     * 查询说首月
     *
     * @param id
     * @return
     */
    Map<String, Object> getActivateSy(String id);

}
